Rendering is a process by which graphic objects are converted to pixels. The rendering is performed by a graphics rendering system which receives the graphic objects from an application program as graphic commands. Graphics rendering systems typically use a painters algorithm style of rendering where each graphic object is drawn onto a frame buffer as the graphic object arrives. Other graphics rendering systems use a 2-stage approach, where the graphics rendering system in a first stage converts all incoming graphic objects into some intermediate format for the page, and in a second stage renders a scanline at a time from the intermediate format.
No matter the type of graphics rendering system, efficiency problems are suffered due to the nature of some of the graphic commands received from the application programs. For example, a common drawing application program passes a gradient fill to the graphics rendering system as a group of adjacent overlapping rectangles, each with a slightly different flat colour, thereby giving the impression of a smooth gradient fill. Although true to the nature of the original object, the graphic objects are abundant with redundant data.
In an attempt to reduce the above inefficiencies, it has been proposed to detect simple graphic objects that may be combined into more complex graphic objects, and combining such graphic objects into object groups, thereby removing redundant data and reducing the number of raster operations. An object group, in this context, is used to describe a group of one or more objects that may be combined to form a more efficient (set of) object(s) specific to the graphics rendering system. The combined object(s) may be more complex than the group of single objects, but the graphics rendering system may be able to handle the object group(s) more efficiently. Single objects may be classified as an object group if such single objects are transformed into a format more desirable to the graphics rendering system than the format in which the objects were originally represented.
Object group detection schemes are typically used for determining whether or not the objects are able to be grouped to form a more efficient/desirable set of objects. System designers specifically tailor detection schemes to detect and “correct” these object inefficiencies. The “corrected” graphic object data, although most likely more complex than the original, would be optimised for the specific graphics rendering system, thus improving the rendering efficiency of such a system.
Each detection scheme detects and combines a different grouping of graphic objects to form a complex graphic object. Due to the fact that detection schemes often use one or more of the same objects, conflict amongst detection schemes typically occurs when the rendering system includes multiple detection schemes.